import socket
import sys
import time
import random

## Standalone IPFIX stressor
## Used to reproduce issue 134 https://github.com/logstash-plugins/logstash-codec-netflow/issues/134

host = 'host02'  
port = 2055

tpl = '\x00\n\x00\xa4Z\xd2\xc6\xfc\x00\x00K\xce\xabfn\xab\x00\x02\x00\x94\xce\xc7\x00\x17\x00\x08\x00\x04\x00\x1b\x00\x10\x00\x07\x00\x02\x00\x0c\x00\x04\x00\x1c\x00\x10\x00\x0b\x00\x02\x00\x10\x00\x04\x00\x11\x00\x04\x00\x04\x00\x01\x80\x01\xff\xff\x00\x00<%\x80\x1c\xff\xff\x00\x00<%\x00\x96\x00\x04\x00\x97\x00\x04\x80\x03\x00\x08\x00\x00<%\x80\x04\x00\x08\x00\x00<%\x80\x15\xff\xff\x00\x00<%\x80\x19\x00\x04\x00\x00<%\x80\x1a\xff\xff\x00\x00<%\x80\x16\xff\xff\x00\x00<%\x80\x0f\xff\xff\x00\x00<%\x80\x02\xff\xff\x00\x00<%\x80\x10\xff\xff\x00\x00<%\x80/\xff\xff\x00\x00<%'

# 8 flows:
data = '\x00\n\x05KZ\xd2\xc78\x00\x00K\xd4\xabfn\xab\xce\xc7\x05;\xb5\xd6WG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x1b\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xde\x00\x00\x1d\x97\x00\x00\x1d\x97\x06\x0eBeing analyzed\x00Z\xd2\xc6zZ\xd2\xc6\xfe\x00\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!INITIAL,SERVER_IS_LOCAL,BEGINNING\x0eBeing analyzed\x00\x05IPFIX\x00\x00\x00\x00 \x01\x03\x88\xcf\n\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01\x00\x88\x00\x00\x00\x00 \x01\x03\x88\xcf\n\x00\x06\x00\x00\x00\x00\x00\x00\x00\x02\x00\x87\x00\x00\x00\x00\x00\x00\x00\x00:\x1aIP protocol 58 (IPv6-ICMP)\x00Z\xd2\xc6\xecZ\xd2\xc6\xfe\x00\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00-INITIAL,SERVER_IS_LOCAL,BEGINNING,ESTABLISHED\x1aIP protocol 58 (IPv6-ICMP)\x00\x05IPFIX\x05\xbc\x0b#\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac{\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00V\xec\x00\x00\x1d\x97\x00\x00\x1d\x97\x06\x0eBeing analyzed\x00Z\xd2\xc6\x84Z\xd2\xc7\x02\x00\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!INITIAL,SERVER_IS_LOCAL,BEGINNING\x0eBeing analyzed\x00\x05IPFIX\xceu\x19Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe2\x00\x00\x1d\x97\x01\x14IP protocol 1 (ICMP)\x00Z\xd2\xc6\xfeZ\xd2\xc7*\x00\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!INITIAL,SERVER_IS_LOCAL,BEGINNING\x14IP protocol 1 (ICMP)\x00\x05IPFIX\x00\x00\x00\x00 \x01\x03\x88\xcf\n\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01\x00\x88\x00\x00\x00\x00 \x01\x03\x88\xcf\n\x00\x06\x00\x00\x00\x00\x00\x00\x00\x02\x00\x87\x00\x00\x00\x00\x00\x00\x00\x00:\x1aIP protocol 58 (IPv6-ICMP)\x00Z\xd2\xc7\nZ\xd2\xc7*\x00\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00-INITIAL,SERVER_IS_LOCAL,BEGINNING,ESTABLISHED\x1aIP protocol 58 (IPv6-ICMP)\x00\x05IPFIX\xb9\xe8\x1d\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda=\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x1b\x00\x00\x1d\x97\x00\x00\x1d\x97\x06\x0eBeing analyzed\x00Z\xd2\xc6\xfbZ\xd2\xc78\x00\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!INITIAL,SERVER_IS_LOCAL,BEGINNING\x0eBeing analyzed\x00\x05IPFIX\xb1\xbc\xe4\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\xd6\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x1d\x97\x00\x00\x1d\x97\x06\x0eBeing analyzed\x00Z\xd2\xc7\x1aZ\xd2\xc78\x00\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!INITIAL,SERVER_IS_LOCAL,BEGINNING\x0eBeing analyzed\x00\x05IPFIX\x8a,\xa1\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x99\x8a,\xa1\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x1d\x97\x00\x00\x1d\x97\x06\x05BGP-4\x00Z\xd2\xc6\x0cZ\xd2\xc78\x00\x00\x00\x00\x00\x00\x1b\xa4\x00\x00\x00\x00\x00\x00\x0c\xee\x00\x00\x00\x00\x00\x00\x006INTERACTIVE,CLIENT_IS_LOCAL,INBOUND,ESTABLISHED,ACTIVE\x05BGP-4\x00\x05IPFIX'


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

print("IPFIX v9: sending 1 template 1 data packet in an infinite loop")

duration = 0.0
while True:
    for i in range(0,400):
        sock.sendto(tpl, (host, port))
        sock.sendto(data, (host, port))
    sys.stdout.write('.')
    sys.stdout.flush()
    time.sleep(random.random())
print
